# -*- coding: utf-8 -*-
"""
mentions.py - @の発言を取得して処理
"""
import logging
from google.appengine.ext import db

from gaeo.controller import BaseController
from controller.twitter import TwitterController

from model.mentions import Mentions
from model.config import Config

class MentionsController(TwitterController):
    def index(self):
        api = self.init()

        # configから最新の管理済IDを取得
        config = Config.gql("WHERE k = :key", key = "latest_id")
        res = config.fetch(1)
        latest_id = res[0].v
        logging.info(latest_id)

        # mentionsを取得
        mentions = api.mentions(since_id=latest_id)
        mentions_list = []

        for mention in mentions:
            mention_object = {
                "id"            : mention.id,
                "userid"        : mention.user.id,
                "text"          : mention.text,
                "screen_name"   : mention.user.screen_name
            }

            mentions_list.append(mention_object)

        # 時系列のため逆順にする
        mentions_list.reverse()

        for mention in mentions_list:
            obj = Mentions()
            obj.id = mention["id"]
            obj.text = mention["text"]
            obj.userid = mention["userid"]
            obj.screen_name = mention["screen_name"]
            obj.put()

            # 追加したらRTする
            # RTする処理も、元の@とか、RTの発言を除外とか
            # 公式のRTのAPIを使うとか、やる必要があるので、
            # 別の関数にする。どこに置くかとか未定
            # try:
            # retweet() 
            # except:
            # break
            logging.debug(mention["text"])
            ## latest_idのupdateをする: キーで管理すべきかも
            #latest_id = res[0].v


            # retweetのupdateが成功したら、
            # rt_doneは1にする
            obj.rt_done = 1
            obj.put()

        self.render(text="")

